;(function($){
    /**
     * 变量 观察者
     * @var cartsListAdd 购物车添加数据的观察者;
     * @var cartsListReduce 购物车减少数据的观察者;
     */
    let cartsListAdd = $.Callbacks();
    let cartsListReduce = $.Callbacks();
    let saveCarts = $.Callbacks();

    let count = 0;
    
    /**
     * 数据仓库;
     */
    let GLOBAL_STORE = [];

    /**
     * 
     * @function addCartsData 增加购物车数量;
     * @function reduceCartsData 减少购物车数量;
     * @function saveData 保存数据到localStorage;
     * @function getCarts 初始化获取购物车
     * @function loadData 获取数据
     */
    function addCartsData(){
        //改变count
        count ++;

        //改变数量
        $(this).prev().html(count);

        //根据数量改变“-”样式
        if(count != 0){
            $(this).prevAll(".count-reduce").addClass("active");
        }
    }

    //减少购物车数量
    function reduceCartsData(){
        //改变count
        if(count == 0){
            count == 0
        }else{
            count --;
        }

        //改变数量
        $(this).next().html(count);

        //根据数量改变“-”样式
        if(count == 0){
            $(this).removeClass("active");
        }
    }

    //初始化数据
    function initData(){
        let cartsData = localStorage.getItem("cartsData");
        cartsData = JSON.parse(cartsData);
        cartsData = cartsData == null ? [] : cartsData;
        
        let detailData = getCarts("detailData");
        if(cartsData.length == 0){
            count = count
        }else{
            cartsData.forEach(item=>{
                if(detailData.id == item.id){
                    count = item.count;
                }
            })
        }
        GLOBAL_STORE = cartsData;
    }

    //保存数据到localStorage;
    function saveData(){
        let detailData = getCarts("detailData");
        let _obj = {
            id : detailData.id,
            data : detailData,
            count : count
        }
        GLOBAL_STOR = GLOBAL_STORE;
        if(GLOBAL_STORE.length == 0){
            GLOBAL_STORE.push(_obj);
        }else{
            let statu = 0;
            GLOBAL_STORE.forEach(item =>{
                console.log(item.id, detailData.id);
                if(item.id == detailData.id){
                    item.count = count;
                    statu = 1;
                }
            })
            if(statu !== 1){
                GLOBAL_STORE.push(_obj);
            }
        }
        GLOBAL_STORE = JSON.stringify(GLOBAL_STORE);
        localStorage.setItem("cartsData",GLOBAL_STORE);

        alert("已成功加入购物车");

        //刷新页面
        location.href = "detail.html";
    }

    //初始化获取购物车；
    function getCarts(localName){
        if(localStorage.getItem(localName)){
            return JSON.parse(localStorage.getItem(localName))
        }else{
            return {};
        }
    }

    function bindEvent(){
        //购物车添加数据时
        cartsListAdd.add([addCartsData]);
        //购物车减少数据时
        cartsListReduce.add([reduceCartsData]);
        //存数据
        saveCarts.add([saveData])

        //商家选择事件
        $(".whole-detail-info-wrapper").on("click",".count-plus",cartsListAdd.fire);
        $(".whole-detail-info-wrapper").on("click",".count-reduce",cartsListReduce.fire);
        $(".whole-detail-info-wrapper").on("click",".carts", saveCarts.fire);
    }
    initData();
    bindEvent();
})(jQuery);